Apache Ivy
   HOME

TheInfoList



OR:

Apache Ivy is a transitive
package manager A package manager or package-management system is a collection of software tools that automates the process of installing, upgrading, configuring, and removing computer programs for a computer in a consistent manner. A package manager deals wi ...
. It is a sub-project of the
Apache Ant Apache Ant is a software tool for automating software build processes which originated from the Apache Tomcat project in early 2000 as a replacement for the Make build tool of Unix. It is similar to Make, but is implemented using the Java languag ...
project, with which Ivy works to resolve project dependencies. An external
XML Extensible Markup Language (XML) is a markup language and file format for storing, transmitting, and reconstructing arbitrary data. It defines a set of rules for encoding documents in a format that is both human-readable and machine-readable. T ...
file defines project dependencies and lists the resources necessary to build a project. Ivy then resolves and downloads resources from an artifact repository: either a private repository or one publicly available on the
Internet The Internet (or internet) is the global system of interconnected computer networks that uses the Internet protocol suite (TCP/IP) to communicate between networks and devices. It is a '' network of networks'' that consists of private, pub ...
. To some degree, it competes with
Apache Maven Maven is a build automation tool used primarily for Java projects. Maven can also be used to build and manage projects written in C#, Ruby, Scala, and other languages. The Maven project is hosted by the Apache Software Foundation, where it was ...
, which also manages dependencies. However, Maven is a complete build tool, whereas Ivy focuses purely on managing transitive dependencies.


History

Jayasoft first created Ivy in September, 2004, with Xavier Hanin serving as the principal
architect An architect is a person who plans, designs and oversees the construction of buildings. To practice architecture means to provide services in connection with the design of buildings and the space within the site surrounding the buildings that h ...
and
developer Developer may refer to: Computers * Software developer, a person or organization who develop programs/applications * Video game developer, a person or business involved in video game development, the process of designing and creating games * Web d ...
of the project. Jayasoft moved hosting of Ivy (then at version 1.4.1) to
Apache Incubator Apache Incubator is the gateway for open-source projects intended to become fully fledged Apache Software Foundation projects. The Incubator project was created in October 2002 to provide an entry path to the Apache Software Foundation for projec ...
in October 2006. Since then, the project has undergone package renaming to reflect its association with the
Apache Software Foundation The Apache Software Foundation (ASF) is an American nonprofit corporation (classified as a 501(c)(3) organization in the United States) to support a number of open source software projects. The ASF was formed from a group of developers of the A ...
. Package names prefixes of the form fr.jayasoft.ivy have become org.apache.ivy prefixes. Ivy graduated from the
Apache Incubator Apache Incubator is the gateway for open-source projects intended to become fully fledged Apache Software Foundation projects. The Incubator project was created in October 2002 to provide an entry path to the Apache Software Foundation for projec ...
in October, 2007. As of 2009 it functions as a sub-project of
Apache Ant Apache Ant is a software tool for automating software build processes which originated from the Apache Tomcat project in early 2000 as a replacement for the Make build tool of Unix. It is similar to Make, but is implemented using the Java languag ...
. Over time, Ivy has been used in
sbt sbt is an open-source build tool for Scala and Java projects, similar to Apache's Maven and Gradle. Its main features are: *Native support for compiling Scala code and integrating with many Scala test frameworks *Continuous compilation, t ...
(until sbt 1.3), grails (until 2014),
gradle Gradle is a build automation tool for multi-language software development. It controls the development process in the tasks of compilation and packaging to testing, deployment, and publishing. Supported languages include Java (as well as Kotli ...
(until 2012), and Jenkins.


Features

* Managing project dependencies * XML-driven declaration of project dependencies and JAR repositories * Automatic retrieval of transitive dependency definitions and resources * Automatic integration to publicly available artifact repositories * Resolution of dependency closures * Configurable project state definitions, which allow for multiple dependency-set definitions * Publishing of artifacts into a local enterprise repository


See also

*
Apache Maven Maven is a build automation tool used primarily for Java projects. Maven can also be used to build and manage projects written in C#, Ruby, Scala, and other languages. The Maven project is hosted by the Apache Software Foundation, where it was ...
, an alternative dependency management and build tool


References

* Steve Loughran, Erik Hatcher: Ant in Action, Manning Publications Company, *


External links

*
Automation for the people: Manage dependencies with Ivy
by Paul Duvall {{Apache Software Foundation Java development tools
Ivy ''Hedera'', commonly called ivy (plural ivies), is a genus of 12–15 species of evergreen climbing or ground-creeping woody plants in the family Araliaceae, native to western, central and southern Europe, Macaronesia, northwestern Africa and ...
Build automation